mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	The virtio_find_vqs() ABI has been changed since the 6.11 kernel.
Switch back to using the old ABI to fix the build error:
../mac80211-regular/backports-6.11/drivers/net/wireless/virtual/mac80211_hwsim.c: In function 'init_vqs':
../mac80211-regular/backports-6.11/drivers/net/wireless/virtual/mac80211_hwsim.c:6632:31: error: array type has incomplete element type 'struct virtqueue_info'
 6632 |         struct virtqueue_info vqs_info[HWSIM_NUM_VQS] = {
      |                               ^~~~~~~~
../mac80211-regular/backports-6.11/drivers/net/wireless/virtual/mac80211_hwsim.c:6637:16: error: too few arguments to function 'virtio_find_vqs'
 6637 |         return virtio_find_vqs(vdev, HWSIM_NUM_VQS,
      |                ^~~~~~~~~~~~~~~
In file included from ../mac80211-regular/backports-6.11/drivers/net/wireless/virtual/mac80211_hwsim.c:38:
./include/linux/virtio_config.h:224:5: note: declared here
  224 | int virtio_find_vqs(struct virtio_device *vdev, unsigned nvqs,
      |     ^~~~~~~~~~~~~~~
../mac80211-regular/backports-6.11/drivers/net/wireless/virtual/mac80211_hwsim.c:6632:31: error: unused variable 'vqs_info' [-Werror=unused-variable]
 6632 |         struct virtqueue_info vqs_info[HWSIM_NUM_VQS] = {
      |                               ^~~~~~~~
../mac80211-regular/backports-6.11/drivers/net/wireless/virtual/mac80211_hwsim.c:6639:1: error: control reaches end of non-void function [-Werror=return-type]
 6639 | }
      | ^
Signed-off-by: Shiji Yang <yangshiji66@qq.com>
		
	
			
		
			
				
	
	
		
			31 lines
		
	
	
		
			991 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			991 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
| --- a/drivers/net/wireless/virtual/mac80211_hwsim.c
 | |
| +++ b/drivers/net/wireless/virtual/mac80211_hwsim.c
 | |
| @@ -6629,6 +6629,7 @@ static void hwsim_virtio_rx_done(struct
 | |
|  
 | |
|  static int init_vqs(struct virtio_device *vdev)
 | |
|  {
 | |
| +#if LINUX_VERSION_IS_GEQ(6,11,0)
 | |
|  	struct virtqueue_info vqs_info[HWSIM_NUM_VQS] = {
 | |
|  		[HWSIM_VQ_TX] = { "tx", hwsim_virtio_tx_done },
 | |
|  		[HWSIM_VQ_RX] = { "rx", hwsim_virtio_rx_done },
 | |
| @@ -6636,6 +6637,19 @@ static int init_vqs(struct virtio_device
 | |
|  
 | |
|  	return virtio_find_vqs(vdev, HWSIM_NUM_VQS,
 | |
|  			       hwsim_vqs, vqs_info, NULL);
 | |
| +#else /* Using the old ABI, copied from kernel 6.6 */
 | |
| +	vq_callback_t *callbacks[HWSIM_NUM_VQS] = {
 | |
| +		[HWSIM_VQ_TX] = hwsim_virtio_tx_done,
 | |
| +		[HWSIM_VQ_RX] = hwsim_virtio_rx_done,
 | |
| +	};
 | |
| +	const char *names[HWSIM_NUM_VQS] = {
 | |
| +		[HWSIM_VQ_TX] = "tx",
 | |
| +		[HWSIM_VQ_RX] = "rx",
 | |
| +	};
 | |
| +
 | |
| +	return virtio_find_vqs(vdev, HWSIM_NUM_VQS,
 | |
| +			       hwsim_vqs, callbacks, names, NULL);
 | |
| +#endif
 | |
|  }
 | |
|  
 | |
|  static int fill_vq(struct virtqueue *vq)
 |