Tuesday, January 26, 2016

git恢復成未下指令前的狀態

當你不小心手殘來硬的git reset --hard HEAD^後,發現砍錯了,恢復不了怎麼辦?怎麼辦?!!!

你的救星來了!!! 請參考下面操作~~~

>> git reset --hard HEAD^ (向前砍一次commit,心淌血了T^T)
>> git reset --hard HEAD^ (向前又砍了一次commit,心又再一次的淌血T^T)
>> git log --oneline
c825428 [TMAC] refactor TMAC FSM to support RTS+CTS+DATA+BA
cbca69b [TMAC] 1.add info in TRxreq and TRxsts 2. add a simple FSM in PPU Conflicts:    examples/wireless/throughput/omnetpp.ini        src/linklayer/ieee80211/mac/TrxReq.msg
73727ff Handle SIFS TX Request within TXOP

>> git reflog (查看之前下的歷史紀錄跟當下的hash值)

c825428 HEAD@{0}: reset: moving to HEAD^ (發現這是你第二次砍完的版本)
6da934d HEAD@{1}: reset: moving to HEAD^ (發現這是你第一次砍完的版本)
1c0dbcc HEAD@{2}: rebase finished: returning to refs/heads/DEV_BR_802.11ax

恢復到你還沒砍之前的狀態
>> git reset --hard 1c0dbcc
HEAD is now at 1c0dbcc [802.11x][RMAC][Feature] receive the Radio state at RMAC and change message between RPU and CAU

所以你可以看到又多出兩筆先前commit的資料
>> git log --oneline
1c0dbcc [802.11x][RMAC][Feature] receive the Radio state at RMAC and change message between RPU and CAU
6da934d [802.11x][RMAC][Feature] Add the replyInterval in RxReq message
c825428 [TMAC] refactor TMAC FSM to support RTS+CTS+DATA+BA
cbca69b [TMAC] 1.add info in TRxreq and TRxsts 2. add a simple FSM in PPU Conflicts:    examples/wireless/throughput/omnetpp.ini        src/linklayer/ieee80211/mac/TrxReq.msg
73727ff Handle SIFS TX Request within TXOP


有沒有頓時覺得用git用得很開勳阿>///<
請大家繼續開心的寫程式唄!


傻孩子下台一鞠躬! <(_  _)>

Thursday, January 14, 2016

IEEE 802.11 frame length (include header)

802.11 legacy
---

  • RTS: 20B = FC(2B) + Duration(2B) + RA(6B) + TA(6B) + FCS(4B)
  • CTS: 14B (= RTS size - TA)
  • ACK: 14B (= CTS size)

ps. FC =  Frame Control field


  • PS-Poll: 20B = FC(2B) + AID(2B) + RA=BSSID(6B) + TA(6B) + FCS(4B)
  • CF-End: 20B (format is similar to RTS, but Duration = 0 and TA = BSSID, RA is group addr)
  • CF-End + CF-ACK: 20B (format is similar to CF-End)


802.11n
---

  • BAR: 22B + variable = FC(2B) + Duration(2B) + RA(6B) + TA(6B) + BAR control(2B) + BAR info(variable) + FCS(4B)
    • BAR control = BAR Ack policy(1b) + multi-TID(1b) + compressed bitmap(1b) + reserve (9b) + tid info(4b)
    • if multi-TID=0, BAR info = BA Start Sequence Control(2B) = Frag number(4b) + start sequence number(12b)
    • if multi-TID=1, BAR info = perTID info(2B) + BA Start Sequence Control(2B). 4b TID subfield in perTID info.
  • BA: 22B + variable = FC(2B) + Duration(2B) + RA(6B) + TA(6B) + BA control(2B) + BA info(variable) + FCS(4B)
    • BAR control = BAR Ack policy(1b) + multi-TID(1b) + compressed bitmap(1b) + reserve (9b) + tid info(4b)
    • if multi-TID=0, BAR info = BA Start Sequence Control(2B) + BA bitmap(128B/8B, if compressed bitmap=1)
    • if multi-TID=1, BAR info = perTID info(2B) + BA Start Sequence Control(2B) + BA bitmap(8B, if compressed bitmap=1)
  • dfd


note: B = byte, b = bit